package com.bgds.sys.module.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.bgds.sys.module.entity.AlarmLog;
import com.bgds.sys.module.entity.dto.AlarmInfo;
import com.bgds.sys.module.entity.dto.AlarmLogDto;
import io.swagger.models.auth.In;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 报警日志Mapper
 * @author lj
 */
@Repository
public interface AlarmLogMapper extends BaseMapper<AlarmLog> {




    /**
     * 时间段分页查询报警信息
     * @param startTime 起始时间
     * @param endTime 结束时间
     * @param status 状态
     * @param page 分页参数
     * @return IPage<AlarmLogDto>
     */
    IPage<AlarmLogDto> listByPage(IPage<AlarmLogDto> page, @Param("startTime") Long startTime, @Param("endTime")Long endTime, @Param("status") Integer status);

    /**
     * 时间段查询报警信息
     * @param deviceCode 设备编码
     * @param startTime 起始时间
     * @param endTime 结束时间
     * @return
     */
    List<AlarmLogDto> listByParam(@Param("deviceCode")String deviceCode, @Param("startTime") Long startTime, @Param("endTime")Long endTime);




    /**
     * 获取最新报警日志
     * @return
     */
    AlarmInfo getByMaxTime();

    /**
     *
     * @param arrtId
     * @return
     */
   List<AlarmLog> getOne(@Param("arrtId")Long arrtId);

    /**
     * 设备编码获取报警日志
     * @param deviceCode
     * @return
     */
    List<AlarmLog>  listByDeviceCode(@Param("deviceCode")String deviceCode);


    List<AlarmLog> listByAttrIds(@Param("attrIds")List<Long> attrIds);


    /**
     * 时间段分页模糊查询报警信息
     * @param startTime 起始时间
     * @param endTime 结束时间
     * @param status 状态
     * @param page 分页参数
     * @return IPage<AlarmLogDto>
     */
    IPage<AlarmLogDto> queryForPage(IPage<AlarmLogDto> page, @Param("startTime") Long startTime, @Param("endTime")Long endTime, @Param("status") Integer status, @Param("deviceName") String deviceName, @Param("attrName")String attrName,@Param("alarmLevel")Integer alarmLevel);
}
